package com.xb.loan.cashier.biz.dao;


import com.xb.loan.cashier.biz.dao.bean.CashierEncashOrder;
import com.xb.loan.util.mybatis.MyBatisRepository;

import java.util.List;
import java.util.Map;

@MyBatisRepository
public interface CashierEncashOrderDao {

	int insert(CashierEncashOrder record);

    CashierEncashOrder selectByOrderId(String orderId);
    /**
     * 更新推送失败次数
     * @param orderId
     * @return
     */
    int updatePushResultCount(String orderId);

//	CashierEncashOrder selectById(String cashierOrderId);

	/**
	 * 初始化提现订单批次号
	 * @param params orderId
	 *  paychannelType
	 *  batchId
	 * @return
	 */
    int initEncashOrder(Map<String, Object> params);

    /**
     * 分页查询提现订单
     * @param params status
     *  bankCodePlat
     *  endTime
     *  pageNo
     *  pageSize
     * @return
     */
    List<CashierEncashOrder> selectEncashOrders(Map<String, Object> params);

    List<CashierEncashOrder> selectBatchOrders(Map<String, Object> params);

    int selectBatchCount(String batchId);

    int updateEncashResult(Map<String, Object> params);

    /**
     * 更新推送成功状态
     * @param orderId
     */
    int updatePushSuccess(String orderId);

    /**
     * 更新推送失败状态
     * @param orderId
     */
    int updatePushFail(String orderId);

    /**
     * 提现退票
     * @param params
     */
    int refundEncashResult(Map<String, Object> params);

    /**
     * 查询需要回推的提现订单
     * @param params
     * @return
     */
    List<CashierEncashOrder> selectPushOrders(Map<String, Object> params);

    /**
     * 更新对账结果
     * @param params
     * @return
     */
    int updateAccountStatus(Map<String, Object> params);

    /**
     * 查询第三方少的对账数据
     * @param params
     * @return
     */
    List<CashierEncashOrder> selectThirdLessData(Map<String, Object> params);

    /**
     * 账期内未返回的成功数据
     * @param params
     * @return
     */
    List<CashierEncashOrder> selectAccountNonDatas(Map<String, Object> params);

    /**
     * 根据订单id查询
     * @param orderIds
     * @return
     */
    List<CashierEncashOrder> selectByOrderIds(List<String> orderIds);

    /**
     * 更新第三方账期时间
     * @param params
     */
    void updateThirdAccountTime(Map<String, Object> params);
    
    int queryRefundCount(String accountPeriod);
    
    List<String> queryRefundAccountPeriod(String accountPeriod);
    
    int queryCountByAccountPeriod(String accountPeriod);
    
    List<CashierEncashOrder> queryAccountByPage(Map<String, Object> params);
    
    int queryAccountCount(String accountPeriod);
    
    List<CashierEncashOrder> queryBatchOrder(String batchId);

}